// 1.引入
import {createStore} from 'vuex'
import {mapGetters} from 'vuex'
// 2.创建一个store对象
const store = createStore({
  // 全局共享的状态(数据)存放
  state: {
    counter: 10,
    students: [
      {id: 100,name: 'why',age: 18},
      {id: 111,name: 'kobe',age: 21},
      {id: 112,name: 'lucy',age: 25},

    ]
  },
  // 同步提交状态: mutations 只能是同步的
  mutations: {
    // +1
    INCREMENT(state){
      state.counter++;
    },
    // -1
    DECREMENT(state){
      state.counter--;
    },
    // 2s后 + 1999
    INCREMENT_1999(state, num){
      state.counter += num;
    }
  },
  // 提交操作给mutations: 可以是同步的,也可以是异步的
  actions: {
    // +1
    increment({commit}){
      commit('INCREMENT')
    },
    // -1
    decrement({commit}){
      commit('DECREMENT')

    },
    // 2s后 + 1999
    increment_1999({commit}, num){
      setTimeout(()=> {
        commit('INCREMENT_1999', num)
      },2000)
    }
  },
  getters: {
    // 获取年龄大于20的学生对象
    more20stu(state){
      return state.students.filter(s => s.age >20)
    },
    // 获取年龄大于20的学生个数
    more20stuLength(state,getters) {
      return getters.more20stu.length
    },
    // 让用户自己决定获取年龄大于多少
    moreAgeStu(state) {
      return function(age){
        return state.students.filter(s => s.age > age)
      }
    }
  },

})

// 3.导出
export default store